showName();
console.log(myname);

var myname = "梅俊逸";
function showName() {
  console.log("函数showName 执行了");
} //先编译在执行;由于赋值的操作是在执行阶段，在编译时顺序会留在原地
//也就是说在这行代码中，执行的顺序为
// function showName() {
//   console.log("函数showName 执行了");
// }
// var myname; // 初始值：undefined

// // 原始代码的剩余部分按顺序执行
// showName();
// console.log(myname);
// myname = "梅俊逸";

// function foo() {
//   foo();
// }
// foo();   爆栈，  调用栈的问题

// var a = 2;
// function add() {
//   var b = 10;
//   console.log(a + b);
// }
// add();

//递归   可用尾递归来解决
// function runStack(n) {
//   if (n === 0) return 100;
//   return runStack(n - 2);
// }
// runStack(200);
